package com.qf.controller;

import com.qf.annotation.NoLogin;
import com.qf.param.DTO.ProductLikeOrDislikeDTO;
import com.qf.service.ProductReviewLikeDislikeService;
import com.qf.util.R;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import javax.annotation.Resource;

/**
 * @Author Ayases
 * @Date 2025/6/11 20:49
 * @Desc
 */

@RestController
@RequestMapping("/productReviewLikeDislike")
public class ProductReviewLikeDislikeController {

    @Resource
    ProductReviewLikeDislikeService productReviewLikeDislikeService;

    /**
     * 用户端：点赞点踩商品评论
     *
     * @param productLikeOrDislikeDTO（点赞或踩的评论id、用户id、操作类型）
     * @return R
     * 思路：
     * 将点赞点踩数量统计暂存到redis中，对数据库添加记录或者更新记录
     * 每天定时任务将redis中的数据同步到mysql中
     * 需要考虑数据一致性问题
     * 需要考虑效率问题-使用多线程异步处理+coundDownLatch
     * <p>
     * 测试逻辑：
     * 1. 首次点赞 → 有效点赞（点赞数+1）
     * 2. 再次点赞 → 取消点赞（点赞数-1）
     * 3. 第三次点赞 → 重新激活（点赞数+1）
     * 4. 切换点踩 → 更新类型（点赞-1，点踩+1）
     * 5. 再次点踩 → 取消点踩（点踩-1）
     * <p>
     * 测试用数据：
     * reviewId:770e8400-e29b-41d4-a716-446655440000
     * userId:user001,user002,user003,user004,user005
     * actionType:1（点赞）
     * actionType:0（踩）
     */
    @NoLogin
    @GetMapping("/likeOrDislikeComment")
    public R likeOrDislikeComment(ProductLikeOrDislikeDTO productLikeOrDislikeDTO) {
        productReviewLikeDislikeService.likeOrDislikeComment(productLikeOrDislikeDTO);
        return R.ok();
    }

}
